package com.rede.didiok.common.dto.rank;

import java.util.Date;

import javax.validation.constraints.*;

import lombok.Data;
import org.hibernate.validator.constraints.URL;
import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.rede.didiok.common.dto.BaseDto;

/**
 * 榜单，榜单的主体信息,一个榜单对应一条记录，一个榜单包含多个 r_rank_member 记录
 * 
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-09-01 14:54:33
 */
@Data
public class RankDto extends BaseDto<RankDto> {
	private static final long serialVersionUID = 1L;

	/**
	 * 榜单名称
	 */
	@NotBlank(message = "品牌名不能为空")
	private String rankName;
	/**
	 * 所属榜单分类uid
	 */
	private String catUid;
	/**
	 * 所属榜单分类名称
	 */
	private String catName;
	/**
	 * 榜单描述
	 */
	private String descript;
	/**
	 * 榜单描述
	 */
	private String content;
	/**
	 * 榜单成员数量
	 */
	private Integer memberCount;
	/**
	 * 品牌logo地址
	 */
	@NotBlank(message = "榜单logo地址不能为空")
	@URL(message = "logo必须是一个合法的url地址")
	private String logo;
	/**
	 * LOGO 图片UID
	 */
	private String fileUid;
	/**
	 * 检索首字母
	 */
	@NotEmpty(message = "检索首字母不能为空")
	@Pattern(regexp = "^[a-zA-Z]$", message = "检索首字母必须是一个字母")
	private String firstLetter;
	/**
	 * 排序
	 */
	@NotNull(message = "排序不能为空")
	@Min(value = 0, message = "排序必须大于等于0的整数")
	private Integer sort;
	/**
	 * 推荐等级(0:正常)
	 */
	@NotNull(message = "推荐等级不能为空")
	@Min(value = 0, message = "推荐等级必须大于等于0的整数")
	private Integer level;
	/**
	 * 创建人uid
	 */
	private String createUserUid;
	/**
	 * 创建人名称
	 */
	private String createUserName;
	/**
	 * 创建时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTime;
	/**
	 * 更新时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date updateTime;

	/**
	 * 点击数
	 */
	private Integer clickCount;

}
